/* * Beanfabrics Framework Copyright (C) by Michael Karneim, beanfabrics.org * Use is subject to license terms. See license.txt. */ package org.beanfabrics.swing.table; import java.beans.BeanDescriptor; import java.beans.BeanInfo; import java.beans.IntrospectionException; import java.beans.Introspector; import java.beans.PropertyDescriptor; import org.beanfabrics.swing.ModelSubscriberBeanInfo; import org.beanfabrics.swing.customizer.table.BnColumnPropertyEditor; import org.beanfabrics.swing.customizer.table.BnTableCustomizer; import org.beanfabrics.util.ExceptionUtil; /** * @author Michael Karneim */ public class BnTableBeanInfo extends ModelSubscriberBeanInfo { private final static Class<?> beanClass = BnTable.class; public BeanDescriptor getBeanDescriptor() { final BeanDescriptor result = new BeanDescriptor(beanClass, BnTableCustomizer.class); result.setValue("EXPLICIT_PROPERTY_CHANGE", Boolean.TRUE); // eclipse ide return result; } public PropertyDescriptor[] getPropertyDescriptors() { try { final PropertyDescriptor pModel = new PropertyDescriptor("presentationModel", this.getBeanClass(), "getPresentationModel", "setPresentationModel"); final PropertyDescriptor provider = new PropertyDescriptor("modelProvider", beanClass, "getModelProvider", "setModelProvider"); provider.setPreferred(true); final PropertyDescriptor path = new PropertyDescriptor("path", beanClass, "getPath", "setPath"); final PropertyDescriptor columns = new PropertyDescriptor("columns", beanClass, "getColumns", "setColumns"); columns.setBound(true); columns.setPropertyEditorClass(BnColumnPropertyEditor.class); path.setBound(true); return new PropertyDescriptor[] { pModel, provider, path, columns }; } catch (IntrospectionException ex) { ExceptionUtil.getInstance().handleException("", ex); return new PropertyDescriptor[0]; } } public java.awt.Image getIcon(int iconKind) { switch (iconKind) { case BeanInfo.ICON_COLOR_16x16: return loadImage("bn_table_obj16.gif"); default: return null; } } public BeanInfo[] getAdditionalBeanInfo() { final Class<?> superclass = beanClass.getSuperclass(); try { final BeanInfo superBeanInfo = Introspector.getBeanInfo(superclass); return new BeanInfo[] { superBeanInfo }; } catch (IntrospectionException ex) { ExceptionUtil.getInstance().handleException("", ex); return null; } } @Override protected Class<?> getBeanClass() { return beanClass; } @Override protected boolean isPathBound() { return false; } }